<?php

namespace App\Http\Controllers\Admin;

use App\Exports\FangOwnersExport;
use Maatwebsite\Excel\Facades\Excel;
use App\Models\FangOwners;
use Illuminate\Http\Request;

use OSS\Core\OssException;
use OSS\OssClient;

class FangOwnerController extends BaseController
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {

        $data = FangOwners::paginate($this->pathSize)->appends($request->all());
        return view('admin.fang_owner.index',compact('data'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('admin.fang_owner.add');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        try {
            //

            $params = $request->except(['_token','file']);
            $res= FangOwners::create($params);
            if ($res){

                return redirect(route('admin.fang_owners.index'));
            }else{

                return redirect(route('admin.fang_owners.create'))->withErrors("文章添加失败");
            }
        }catch (\Exception $e){


            return redirect(route('admin.fang_owners.create'))->withErrors($e->getMessage());
        }
    }

    /**
     * 资源路由接 对象 需要与 路由名后的接收值一致，可以使用  php artisan route:list  查看
     * 或直接 接收id 也好使
     *
     * 。展示房东身份证
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show(/*$id,*/FangOwners $fang_owner)
    {

      // $fang_owner =FangOwners::find($id);

        $pics = explode('#',trim($fang_owner['pic'],"#"));

        //循环数组
        array_map(function ($val){
            echo "<div><img src='$val' alt='' width='150'></div>";
        },$pics);

        return "";

    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
    /*
     * 本地上传 房东身份证
     */
    public function localUploadFile(Request $request){
        //接收图片 // 平且 上传到本地磁盘
        //此时 返回值是 文件名
        $file = $request->file('file')->store('','fang_owner');

        //拼接返回路径
        $file='/uploads/fang_owner/'.$file;
        return $this->writeJson('0',['file'=>$file]);

    }
    /*
     * 添加时删除本地图片
     */
    public function delPic(Request $request){


        $pic = $request->get('pic');
          $res=  unlink(public_path().$pic);
          if ($res){

              return $this->writeJson(0,'',"删除成功");
          }else{

              return $this->writeJson(1103,'',"删除失败");
          }

    }


    /**
     * 添加时图片上传到云端
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function ossUploadFile(Request $request){
        //获取临时上传路径名称


        //对接云 上传
        // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
        $accessKeyId = config('oss.aliyuncs.accessKeyId');
        $accessKeySecret = config('oss.aliyuncs.accessKeySecret');
        // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
        $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
        // 填写Bucket名称，例如examplebucket。
        $bucket= config('oss.aliyuncs.bucket');
        // 填写Object完整路径，例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
        $ossName = "owner/".md5(rand(1111,9999).time()).'.jpg';
        // <yourLocalFile>由本地文件路径加文件名包括后缀组成，例如/users/local/myfile.txt。
        // 填写本地文件的完整路径，例如D:\\localpath\\examplefile.txt。如果未指定本地路径，则默认从示例程序所属项目对应本地路径中上传文件。
        $filePath =$request->file('file')->getPathname();

        try{
            $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);

           $res= $ossClient->uploadFile($bucket, $ossName, $filePath);
        //   dd($res);
            //  云端路径
            $iconPath=config('oss.aliyuncs.aliHttp').$ossName;
            return $this->writeJson(0,['file'=>$iconPath],'success');

        } catch(OssException $e) {
            return $this->writeJson(0,"",$e->getMessage());
        }

    }

    /**
     * 删除云端图片
     * @param Request $request
     * @return \Illuminate\Http\JsonResponse
     */
    public function ossDelPic(Request $request){


        //对接云 上传
        // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
        $accessKeyId = config('oss.aliyuncs.accessKeyId');
        $accessKeySecret = config('oss.aliyuncs.accessKeySecret');
        // yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1（杭州）为例，Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
        $endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
        // 填写Bucket名称，例如examplebucket。
        $bucket= config('oss.aliyuncs.bucket');
        // 填写Object完整路径，例如exampledir/exampleobject.txt。Object完整路径中不能包含Bucket名称。
        //$ossName = md5(rand(1111,9999).time()).'.jpg';
        // <yourLocalFile>由本地文件路径加文件名包括后缀组成，例如/users/local/myfile.txt。
        // 填写本地文件的完整路径，例如D:\\localpath\\examplefile.txt。如果未指定本地路径，则默认从示例程序所属项目对应本地路径中上传文件。

        //找到 com 首次出现的位置  截取到最后
        $filePath =$request->get('pic');

        $filePath = substr($filePath, strpos($filePath, '.com')+5);


        try{
            $ossClient = new OssClient($accessKeyId, $accessKeySecret, $endpoint);

            return $this->writeJson(0,"",'success');
        } catch(OssException $e) {
            return $this->writeJson(0,"",$e->getMessage());
        }
    }

    /**
     * 导出带条件
     * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
     */
    public function export()
    {
        return Excel::download((new FangOwnersExport(['sex'=>1,'name'=>'李'])), 'owners.xlsx');
    }
}
